﻿using System;
using System.Collections.Generic;
using SharpSqlAnalyzer.nodes.hive;
using SharpSqlAnalyzer.nodes.mysql;

namespace SharpSqlAnalyzer.nodes
{
	// Token: 0x020002E3 RID: 739
	public class TFromTable : TNodeWithAliasClause
	{
		// Token: 0x1700057D RID: 1405
		// (get) Token: 0x06001956 RID: 6486 RVA: 0x0032BF26 File Offset: 0x0032A126
		// (set) Token: 0x06001957 RID: 6487 RVA: 0x0032BF2E File Offset: 0x0032A12E
		public List<TIndexHint> IndexHintList
		{
			get
			{
				return this._indexHintList;
			}
			set
			{
				this._indexHintList = value;
			}
		}

		// Token: 0x06001958 RID: 6488 RVA: 0x0032BF37 File Offset: 0x0032A137
		public void setTableonly(TSourceToken st)
		{
			this.Tableonly = st;
		}

		// Token: 0x06001959 RID: 6489 RVA: 0x0032BF40 File Offset: 0x0032A140
		public void setTableSample(TTableSample ts)
		{
			this.tableSample = ts;
		}

		// Token: 0x1700057E RID: 1406
		// (get) Token: 0x0600195A RID: 6490 RVA: 0x0032BF49 File Offset: 0x0032A149
		// (set) Token: 0x0600195B RID: 6491 RVA: 0x0032BF51 File Offset: 0x0032A151
		public virtual TPxGranule PxGranule
		{
			get
			{
				return this.pxGranule;
			}
			set
			{
				this.pxGranule = value;
			}
		}

		// Token: 0x0600195C RID: 6492 RVA: 0x0032BF5A File Offset: 0x0032A15A
		public virtual void incParenthesisCount()
		{
			this.parenthesisCount++;
		}

		// Token: 0x0600195D RID: 6493 RVA: 0x0032BF6A File Offset: 0x0032A16A
		public virtual void incParenthesisAfterAliasCount()
		{
			this.parenthesisAfterAliasCount++;
		}

		// Token: 0x1700057F RID: 1407
		// (get) Token: 0x0600195E RID: 6494 RVA: 0x0032BF7A File Offset: 0x0032A17A
		// (set) Token: 0x0600195F RID: 6495 RVA: 0x0032BF82 File Offset: 0x0032A182
		public virtual int ParenthesisCount
		{
			get
			{
				return this.parenthesisCount;
			}
			set
			{
				this.parenthesisCount = value;
			}
		}

		// Token: 0x17000580 RID: 1408
		// (get) Token: 0x06001960 RID: 6496 RVA: 0x0032BF8B File Offset: 0x0032A18B
		// (set) Token: 0x06001961 RID: 6497 RVA: 0x0032BF93 File Offset: 0x0032A193
		public virtual int ParenthesisAfterAliasCount
		{
			get
			{
				return this.parenthesisAfterAliasCount;
			}
			set
			{
				this.parenthesisAfterAliasCount = value;
			}
		}

		// Token: 0x17000581 RID: 1409
		// (get) Token: 0x06001963 RID: 6499 RVA: 0x0032BFA5 File Offset: 0x0032A1A5
		// (set) Token: 0x06001962 RID: 6498 RVA: 0x0032BF9C File Offset: 0x0032A19C
		public virtual List<THiveKeyValueProperty> TableProperties
		{
			get
			{
				return this.tableProperties;
			}
			set
			{
				this.tableProperties = value;
			}
		}

		// Token: 0x17000582 RID: 1410
		// (get) Token: 0x06001964 RID: 6500 RVA: 0x0032BFAD File Offset: 0x0032A1AD
		// (set) Token: 0x06001965 RID: 6501 RVA: 0x0032BFB5 File Offset: 0x0032A1B5
		public virtual TPartitionExtensionClause PartitionExtensionClause
		{
			get
			{
				return this.partitionExtensionClause;
			}
			set
			{
				this.partitionExtensionClause = value;
			}
		}

		// Token: 0x17000583 RID: 1411
		// (get) Token: 0x06001966 RID: 6502 RVA: 0x0032BFBE File Offset: 0x0032A1BE
		// (set) Token: 0x06001967 RID: 6503 RVA: 0x0032BFC6 File Offset: 0x0032A1C6
		public virtual TXmlTable XmlTable
		{
			get
			{
				return this.xmlTable;
			}
			set
			{
				this.xmlTable = value;
			}
		}

		// Token: 0x17000584 RID: 1412
		// (get) Token: 0x06001968 RID: 6504 RVA: 0x0032BFCF File Offset: 0x0032A1CF
		// (set) Token: 0x06001969 RID: 6505 RVA: 0x0032BFD7 File Offset: 0x0032A1D7
		public virtual TObjectName TableObjectName
		{
			get
			{
				return this.tableObjectName;
			}
			set
			{
				this.tableObjectName = value;
				this.tableObjectName.ObjectType = 3;
			}
		}

		// Token: 0x17000585 RID: 1413
		// (get) Token: 0x0600196A RID: 6506 RVA: 0x0032BFEC File Offset: 0x0032A1EC
		// (set) Token: 0x0600196B RID: 6507 RVA: 0x0032BFF4 File Offset: 0x0032A1F4
		public virtual TExpression TableExpr
		{
			get
			{
				return this.tableExpr;
			}
			set
			{
				this.tableExpr = value;
			}
		}

		// Token: 0x17000586 RID: 1414
		// (get) Token: 0x0600196C RID: 6508 RVA: 0x0032BFFD File Offset: 0x0032A1FD
		// (set) Token: 0x0600196D RID: 6509 RVA: 0x0032C005 File Offset: 0x0032A205
		public virtual TOpenQuery OpenQuery
		{
			get
			{
				return this.openQuery;
			}
			set
			{
				this.openQuery = value;
			}
		}

		// Token: 0x17000587 RID: 1415
		// (get) Token: 0x0600196F RID: 6511 RVA: 0x0032C017 File Offset: 0x0032A217
		// (set) Token: 0x0600196E RID: 6510 RVA: 0x0032C00E File Offset: 0x0032A20E
		public virtual List<TTableHint> TableHintList
		{
			get
			{
				return this.tableHintList;
			}
			set
			{
				this.tableHintList = value;
			}
		}

		// Token: 0x17000588 RID: 1416
		// (get) Token: 0x06001970 RID: 6512 RVA: 0x0032C01F File Offset: 0x0032A21F
		public virtual TSelectSqlNode Subquerynode
		{
			get
			{
				return this.subquerynode;
			}
		}

		// Token: 0x17000589 RID: 1417
		// (get) Token: 0x06001971 RID: 6513 RVA: 0x0032C027 File Offset: 0x0032A227
		// (set) Token: 0x06001972 RID: 6514 RVA: 0x0032C02F File Offset: 0x0032A22F
		public virtual TMultiTargetList RowList
		{
			get
			{
				return this.rowList;
			}
			set
			{
				this.rowList = value;
			}
		}

		// Token: 0x1700058A RID: 1418
		// (get) Token: 0x06001973 RID: 6515 RVA: 0x0032C038 File Offset: 0x0032A238
		// (set) Token: 0x06001974 RID: 6516 RVA: 0x0032C040 File Offset: 0x0032A240
		public virtual bool LateralKeyword
		{
			get
			{
				return this._lateralKeyword;
			}
			set
			{
				this._lateralKeyword = value;
			}
		}

		// Token: 0x1700058B RID: 1419
		// (get) Token: 0x06001975 RID: 6517 RVA: 0x0032C049 File Offset: 0x0032A249
		// (set) Token: 0x06001976 RID: 6518 RVA: 0x0032C051 File Offset: 0x0032A251
		public virtual bool TableKeyword
		{
			get
			{
				return this._tableKeyword;
			}
			set
			{
				this._tableKeyword = value;
			}
		}

		// Token: 0x1700058C RID: 1420
		// (get) Token: 0x06001977 RID: 6519 RVA: 0x0032C05A File Offset: 0x0032A25A
		// (set) Token: 0x06001978 RID: 6520 RVA: 0x0032C062 File Offset: 0x0032A262
		public virtual bool OnlyKeyword
		{
			get
			{
				return this._onlyKeyword;
			}
			set
			{
				this._onlyKeyword = value;
			}
		}

		// Token: 0x1700058D RID: 1421
		// (get) Token: 0x06001979 RID: 6521 RVA: 0x0032C06B File Offset: 0x0032A26B
		// (set) Token: 0x0600197A RID: 6522 RVA: 0x0032C073 File Offset: 0x0032A273
		public virtual TJoinExpr JoinExpr
		{
			get
			{
				return this.joinExpr;
			}
			set
			{
				this.joinExpr = value;
			}
		}

		// Token: 0x1700058E RID: 1422
		// (get) Token: 0x0600197B RID: 6523 RVA: 0x0032C07C File Offset: 0x0032A27C
		// (set) Token: 0x0600197C RID: 6524 RVA: 0x0032C084 File Offset: 0x0032A284
		public virtual ETableSource FromtableType
		{
			get
			{
				return this.fromtableType;
			}
			set
			{
				this.fromtableType = value;
			}
		}

		// Token: 0x1700058F RID: 1423
		// (get) Token: 0x0600197D RID: 6525 RVA: 0x0032C08D File Offset: 0x0032A28D
		// (set) Token: 0x0600197E RID: 6526 RVA: 0x0032C095 File Offset: 0x0032A295
		public virtual TOpenDatasource OpenDatasource
		{
			get
			{
				return this.openDatasource;
			}
			set
			{
				this.openDatasource = value;
			}
		}

		// Token: 0x17000590 RID: 1424
		// (get) Token: 0x0600197F RID: 6527 RVA: 0x0032C09E File Offset: 0x0032A29E
		// (set) Token: 0x06001980 RID: 6528 RVA: 0x0032C0A6 File Offset: 0x0032A2A6
		public virtual TOpenRowSet OpenRowSet
		{
			get
			{
				return this.openRowSet;
			}
			set
			{
				this.openRowSet = value;
			}
		}

		// Token: 0x17000591 RID: 1425
		// (get) Token: 0x06001981 RID: 6529 RVA: 0x0032C0AF File Offset: 0x0032A2AF
		// (set) Token: 0x06001982 RID: 6530 RVA: 0x0032C0B7 File Offset: 0x0032A2B7
		public virtual TOpenXML OpenXML
		{
			get
			{
				return this.openXML;
			}
			set
			{
				this.openXML = value;
			}
		}

		// Token: 0x17000592 RID: 1426
		// (get) Token: 0x06001983 RID: 6531 RVA: 0x0032C0C0 File Offset: 0x0032A2C0
		// (set) Token: 0x06001984 RID: 6532 RVA: 0x0032C0C8 File Offset: 0x0032A2C8
		public virtual TContainsTable ContainsTable
		{
			get
			{
				return this.containsTable;
			}
			set
			{
				this.containsTable = value;
			}
		}

		// Token: 0x17000593 RID: 1427
		// (set) Token: 0x06001985 RID: 6533 RVA: 0x0032C0D4 File Offset: 0x0032A2D4
		public virtual TSourceToken Tableonly
		{
			set
			{
				this._tableonly = value;
				if (value.ToString().Equals("only", StringComparison.CurrentCultureIgnoreCase))
				{
					this._onlyKeyword = true;
					return;
				}
				if (value.ToString().Equals("table", StringComparison.CurrentCultureIgnoreCase))
				{
					this._tableKeyword = true;
					return;
				}
				if (value.ToString().Equals("lateral", StringComparison.CurrentCultureIgnoreCase))
				{
					this._lateralKeyword = true;
				}
			}
		}

		// Token: 0x17000594 RID: 1428
		// (get) Token: 0x06001987 RID: 6535 RVA: 0x0032C141 File Offset: 0x0032A341
		// (set) Token: 0x06001986 RID: 6534 RVA: 0x0032C138 File Offset: 0x0032A338
		public virtual TTableSample TableSample
		{
			get
			{
				return this.tableSample;
			}
			set
			{
				this.tableSample = value;
			}
		}

		// Token: 0x17000595 RID: 1429
		// (get) Token: 0x06001989 RID: 6537 RVA: 0x0032C152 File Offset: 0x0032A352
		// (set) Token: 0x06001988 RID: 6536 RVA: 0x0032C149 File Offset: 0x0032A349
		public virtual TFlashback Flashback
		{
			get
			{
				return this.flashback;
			}
			set
			{
				this.flashback = value;
			}
		}

		// Token: 0x17000596 RID: 1430
		// (get) Token: 0x0600198A RID: 6538 RVA: 0x0032C15A File Offset: 0x0032A35A
		// (set) Token: 0x0600198B RID: 6539 RVA: 0x0032C162 File Offset: 0x0032A362
		public virtual TRelationExpr RelationExpr
		{
			get
			{
				return this.relationExpr;
			}
			set
			{
				this.relationExpr = value;
			}
		}

		// Token: 0x17000597 RID: 1431
		// (get) Token: 0x0600198C RID: 6540 RVA: 0x0032C16B File Offset: 0x0032A36B
		// (set) Token: 0x0600198D RID: 6541 RVA: 0x0032C173 File Offset: 0x0032A373
		public virtual TDataChangeTable DatachangeTable
		{
			get
			{
				return this.datachangeTable;
			}
			set
			{
				this.datachangeTable = value;
			}
		}

		// Token: 0x17000598 RID: 1432
		// (get) Token: 0x0600198E RID: 6542 RVA: 0x0032C17C File Offset: 0x0032A37C
		public virtual TMergeSqlNode MergeSqlNode
		{
			get
			{
				return this.mergeSqlNode;
			}
		}

		// Token: 0x17000599 RID: 1433
		// (get) Token: 0x0600198F RID: 6543 RVA: 0x0032C184 File Offset: 0x0032A384
		// (set) Token: 0x06001990 RID: 6544 RVA: 0x0032C18C File Offset: 0x0032A38C
		public TJsonTable JsonTable
		{
			get
			{
				return this._jsonTable;
			}
			set
			{
				this._jsonTable = value;
			}
		}

		// Token: 0x1700059A RID: 1434
		// (get) Token: 0x06001991 RID: 6545 RVA: 0x0032C195 File Offset: 0x0032A395
		// (set) Token: 0x06001992 RID: 6546 RVA: 0x0032C19D File Offset: 0x0032A39D
		public virtual TPivotedTable PivotedTable
		{
			get
			{
				return this.pivotedTable;
			}
			set
			{
				this.pivotedTable = value;
			}
		}

		// Token: 0x1700059B RID: 1435
		// (get) Token: 0x06001994 RID: 6548 RVA: 0x0032C1AF File Offset: 0x0032A3AF
		// (set) Token: 0x06001993 RID: 6547 RVA: 0x0032C1A6 File Offset: 0x0032A3A6
		public virtual TPivotClause PivotClause
		{
			get
			{
				return this.pivotClause;
			}
			set
			{
				this.pivotClause = value;
			}
		}

		// Token: 0x1700059C RID: 1436
		// (get) Token: 0x06001995 RID: 6549 RVA: 0x0032C1B7 File Offset: 0x0032A3B7
		// (set) Token: 0x06001996 RID: 6550 RVA: 0x0032C1BF File Offset: 0x0032A3BF
		public virtual TFunctionCall FuncCall
		{
			get
			{
				return this.funcCall;
			}
			set
			{
				this.funcCall = value;
			}
		}

		// Token: 0x1700059D RID: 1437
		// (get) Token: 0x06001997 RID: 6551 RVA: 0x0032C1C8 File Offset: 0x0032A3C8
		// (set) Token: 0x06001998 RID: 6552 RVA: 0x0032C1D0 File Offset: 0x0032A3D0
		public virtual TFromTableList FromTableList
		{
			get
			{
				return this.fromTableList;
			}
			set
			{
				this.fromTableList = value;
			}
		}

		// Token: 0x1700059E RID: 1438
		// (get) Token: 0x06001999 RID: 6553 RVA: 0x0032C1D9 File Offset: 0x0032A3D9
		// (set) Token: 0x0600199A RID: 6554 RVA: 0x0032C1E1 File Offset: 0x0032A3E1
		public virtual TInformixOuterClause OuterClause
		{
			get
			{
				return this.outerClause;
			}
			set
			{
				this.outerClause = value;
			}
		}

		// Token: 0x1700059F RID: 1439
		// (get) Token: 0x0600199B RID: 6555 RVA: 0x0032C1EA File Offset: 0x0032A3EA
		// (set) Token: 0x0600199C RID: 6556 RVA: 0x0032C1F2 File Offset: 0x0032A3F2
		public virtual THivePartitionedTableFunction PartitionedTableFunction
		{
			get
			{
				return this.partitionedTableFunction;
			}
			set
			{
				this.partitionedTableFunction = value;
			}
		}

		// Token: 0x170005A0 RID: 1440
		// (get) Token: 0x0600199E RID: 6558 RVA: 0x0032C204 File Offset: 0x0032A404
		// (set) Token: 0x0600199D RID: 6557 RVA: 0x0032C1FB File Offset: 0x0032A3FB
		public virtual List<THiveLateralView> LateralViewList
		{
			get
			{
				return this.lateralViewList;
			}
			set
			{
				this.lateralViewList = value;
			}
		}

		// Token: 0x170005A1 RID: 1441
		// (get) Token: 0x060019A0 RID: 6560 RVA: 0x0032C215 File Offset: 0x0032A415
		// (set) Token: 0x0600199F RID: 6559 RVA: 0x0032C20C File Offset: 0x0032A40C
		public virtual TExpressionList JoinExprList
		{
			get
			{
				return this.joinExprList;
			}
			set
			{
				this.joinExprList = value;
			}
		}

		// Token: 0x170005A2 RID: 1442
		// (get) Token: 0x060019A1 RID: 6561 RVA: 0x0032C21D File Offset: 0x0032A41D
		public virtual THiveFromQuerySqlNode FromQuerySqlNode
		{
			get
			{
				return this.fromQuerySqlNode;
			}
		}

		// Token: 0x060019A2 RID: 6562 RVA: 0x0032C228 File Offset: 0x0032A428
		public override void init(object arg1)
		{
			if (arg1 is TObjectName)
			{
				this.TableObjectName = (TObjectName)arg1;
				this.fromtableType = ETableSource.objectname;
				return;
			}
			if (arg1 is TSelectSqlNode)
			{
				this.subquerynode = (TSelectSqlNode)arg1;
				this.fromtableType = ETableSource.subquery;
				return;
			}
			if (arg1 is TExpression)
			{
				this.tableExpr = (TExpression)arg1;
				this.fromtableType = ETableSource.tableExpr;
				if (this.tableExpr.ExpressionType == EExpressionType.simple_object_name_t)
				{
					this.TableObjectName = this.tableExpr.ObjectOperand;
					this.fromtableType = ETableSource.objectname;
					return;
				}
			}
			else
			{
				if (arg1 is TJoinExpr)
				{
					this.joinExpr = (TJoinExpr)arg1;
					this.fromtableType = ETableSource.join;
					return;
				}
				if (arg1 is TDummy)
				{
					this.initTableDefInDummyNode((TDummy)arg1);
					return;
				}
				if (arg1 is TContainsTable)
				{
					this.containsTable = (TContainsTable)arg1;
					this.fromtableType = ETableSource.containsTable;
					return;
				}
				if (arg1 is TOpenRowSet)
				{
					this.openRowSet = (TOpenRowSet)arg1;
					this.fromtableType = ETableSource.openrowset;
					return;
				}
				if (arg1 is TOpenXML)
				{
					this.openXML = (TOpenXML)arg1;
					this.fromtableType = ETableSource.openxml;
					return;
				}
				if (arg1 is TOpenDatasource)
				{
					this.openDatasource = (TOpenDatasource)arg1;
					this.fromtableType = ETableSource.opendatasource;
					return;
				}
				if (arg1 is TOpenQuery)
				{
					this.openQuery = (TOpenQuery)arg1;
					this.fromtableType = ETableSource.openquery;
					return;
				}
				if (arg1 is TDataChangeTable)
				{
					this.datachangeTable = (TDataChangeTable)arg1;
					this.fromtableType = ETableSource.datachangeTable;
					return;
				}
				if (arg1 is TRelationExpr)
				{
					this.relationExpr = (TRelationExpr)arg1;
					this.TableObjectName = this.relationExpr.RelationName;
					this.fromtableType = ETableSource.objectname;
					return;
				}
				if (arg1 is TFunctionCall)
				{
					this.funcCall = (TFunctionCall)arg1;
					this.fromtableType = ETableSource.function;
					return;
				}
				if (arg1 is TMultiTargetList)
				{
					this.rowList = (TMultiTargetList)arg1;
					this.fromtableType = ETableSource.rowList;
					return;
				}
				if (arg1 is TXmlTable)
				{
					this.xmlTable = (TXmlTable)arg1;
					this.fromtableType = ETableSource.xmltable;
					return;
				}
				if (arg1 is TInformixOuterClause)
				{
					this.outerClause = (TInformixOuterClause)arg1;
					this.fromtableType = ETableSource.informixOuter;
					return;
				}
				if (arg1 is TFromTableList)
				{
					this.fromtableType = ETableSource.table_ref_list;
					this.fromTableList = (TFromTableList)arg1;
					return;
				}
				if (arg1 is THivePartitionedTableFunction)
				{
					this.partitionedTableFunction = (THivePartitionedTableFunction)arg1;
					return;
				}
				if (arg1 is THiveFromQuerySqlNode)
				{
					this.fromQuerySqlNode = (THiveFromQuerySqlNode)arg1;
					this.fromtableType = ETableSource.hiveFromQuery;
					return;
				}
				if (arg1 is TPivotedTable)
				{
					this.pivotedTable = (TPivotedTable)arg1;
					this.fromtableType = ETableSource.pivoted_table;
					return;
				}
				if (arg1 is TMergeSqlNode)
				{
					this.mergeSqlNode = (TMergeSqlNode)arg1;
					this.fromtableType = ETableSource.output_merge;
					return;
				}
				if (arg1 is TJsonTable)
				{
					this._jsonTable = (TJsonTable)arg1;
					this.fromtableType = ETableSource.jsontable;
				}
			}
		}

		// Token: 0x060019A3 RID: 6563 RVA: 0x0032C4D4 File Offset: 0x0032A6D4
		private List<TTableHint> nameListToTableHint(object arg1, bool isSybaseIndexHint)
		{
			List<TTableHint> list = new List<TTableHint>();
			if (arg1 is TObjectNameList)
			{
				TObjectNameList tobjectNameList = (TObjectNameList)arg1;
				for (int i = 0; i < tobjectNameList.size(); i++)
				{
					TObjectName objectName = tobjectNameList.getObjectName(i);
					if (!isSybaseIndexHint && !this.isSQLServerHint(objectName.ToString()))
					{
						list.Clear();
						break;
					}
					TTableHint ttableHint = new TTableHint();
					ttableHint.Hint = objectName;
					if (i == 0)
					{
						ttableHint.startToken = objectName.startToken;
					}
					if (i == tobjectNameList.size() - 1)
					{
						ttableHint.endToken = objectName.startToken;
					}
					list.Add(ttableHint);
				}
			}
			else if (arg1 is TExpressionList)
			{
				TExpressionList texpressionList = (TExpressionList)arg1;
				for (int j = 0; j < texpressionList.size(); j++)
				{
					TExpression expression = texpressionList.getExpression(j);
					if (!isSybaseIndexHint && !this.isSQLServerHint(expression.ToString()))
					{
						list.Clear();
						break;
					}
					TTableHint ttableHint2 = new TTableHint();
					ttableHint2.Hint = expression.ObjectOperand;
					if (j == 0)
					{
						ttableHint2.startToken = expression.startToken;
					}
					if (j == texpressionList.size() - 1)
					{
						ttableHint2.endToken = expression.startToken;
					}
					list.Add(ttableHint2);
				}
			}
			if (list.Count > 0)
			{
				return list;
			}
			return null;
		}

		// Token: 0x060019A4 RID: 6564 RVA: 0x0032C620 File Offset: 0x0032A820
		private bool isSQLServerHint(string pstr)
		{
			bool result = false;
			string[] array = new string[]
			{
				"fastfirstrow",
				"holdlock",
				"nolock",
				"nowait",
				"paglock",
				"readcommitted",
				"readcommittedlock",
				"readpast",
				"readuncommitted",
				"repeatableread",
				"rowlock",
				"serializable",
				"tablock",
				"tablockx",
				"updlock",
				"xlock",
				"keepidentity",
				"keepdefaults",
				"ignore_constraints",
				"ignore_triggers",
				"index"
			};
			for (int i = 0; i < 21; i++)
			{
				if (string.Compare(array[i], pstr, StringComparison.CurrentCultureIgnoreCase) == 0)
				{
					result = true;
					break;
				}
			}
			return result;
		}

		// Token: 0x060019A5 RID: 6565 RVA: 0x0032C70C File Offset: 0x0032A90C
		private void initTableDefInDummyNode(TDummy pdummy)
		{
			this.fromtableType = ETableSource.objectname;
			if (pdummy.int1 == 0)
			{
				this.TableObjectName = (TObjectName)pdummy.node1;
			}
			else if (pdummy.int1 == 1)
			{
				if (pdummy.list1 == null)
				{
					this.funcCall = new TFunctionCall();
					this.funcCall.init(EFunctionType.udf_t, (TObjectName)pdummy.node1);
					this.funcCall.Args = null;
					this.fromtableType = ETableSource.function;
				}
				else
				{
					this.tableHintList = this.nameListToTableHint((TExpressionList)pdummy.list1, false);
					if (this.tableHintList != null)
					{
						this.TableObjectName = (TObjectName)pdummy.node1;
					}
					else
					{
						this.funcCall = new TFunctionCall();
						this.funcCall.init(EFunctionType.udf_t, (TObjectName)pdummy.node1);
						this.funcCall.Args = (TExpressionList)pdummy.list1;
						this.fromtableType = ETableSource.function;
						this.funcCall.startToken = pdummy.startToken;
						this.funcCall.endToken = pdummy.endToken;
					}
				}
			}
			else if (pdummy.int1 == 2)
			{
				this.TableObjectName = (TObjectName)pdummy.node1;
				this.tableHintList = this.nameListToTableHint(pdummy.list1, false);
			}
			else if (pdummy.int1 == 3)
			{
				this.TableObjectName = (TObjectName)pdummy.node1;
				//this.tableHintList = (List<TTableHint>)pdummy.node3;

                tableHintList = (List<TTableHint>)(object)pdummy.node3;
            }
			if (pdummy.node2 != null)
			{
				this.AliasClause = (TAliasClause)pdummy.node2;
				if (this.AliasClause.SybaseIndexHint)
				{
					this.tableHintList = this.AliasClause.TableHints;
					this.AliasClause.endToken = this.AliasClause.AliasName.endToken;
					return;
				}
				if (this.AliasClause.Columns != null)
				{
					this.tableHintList = this.nameListToTableHint(this.AliasClause.Columns, this.AliasClause.SybaseIndexHint);
					if (this.tableHintList != null)
					{
						this.AliasClause.endToken = this.AliasClause.AliasName.endToken;
					}
				}
			}
		}

		// Token: 0x060019A6 RID: 6566 RVA: 0x0032C931 File Offset: 0x0032AB31
		public override void init(object arg1, object arg2)
		{
			this.init(arg1);
			if (arg2 != null)
			{
				this.AliasClause = (TAliasClause)arg2;
			}
		}

		// Token: 0x0400191E RID: 6430
		private List<TIndexHint> _indexHintList;

		// Token: 0x0400191F RID: 6431
		private int parenthesisCount;

		// Token: 0x04001920 RID: 6432
		private int parenthesisAfterAliasCount;

		// Token: 0x04001921 RID: 6433
		private List<THiveKeyValueProperty> tableProperties;

		// Token: 0x04001922 RID: 6434
		private THiveFromQuerySqlNode fromQuerySqlNode;

		// Token: 0x04001923 RID: 6435
		private TPartitionExtensionClause partitionExtensionClause;

		// Token: 0x04001924 RID: 6436
		private TXmlTable xmlTable;

		// Token: 0x04001925 RID: 6437
		private TObjectName tableObjectName;

		// Token: 0x04001926 RID: 6438
		private List<TTableHint> tableHintList;

		// Token: 0x04001927 RID: 6439
		private TSelectSqlNode subquerynode;

		// Token: 0x04001928 RID: 6440
		private TExpression tableExpr;

		// Token: 0x04001929 RID: 6441
		private TMultiTargetList rowList;

		// Token: 0x0400192A RID: 6442
		private TSourceToken _tableonly;

		// Token: 0x0400192B RID: 6443
		private bool _tableKeyword;

		// Token: 0x0400192C RID: 6444
		private bool _onlyKeyword;

		// Token: 0x0400192D RID: 6445
		private bool _lateralKeyword;

		// Token: 0x0400192E RID: 6446
		private TJoinExpr joinExpr;

		// Token: 0x0400192F RID: 6447
		private ETableSource fromtableType;

		// Token: 0x04001930 RID: 6448
		private TOpenDatasource openDatasource;

		// Token: 0x04001931 RID: 6449
		private TOpenXML openXML;

		// Token: 0x04001932 RID: 6450
		private TOpenRowSet openRowSet;

		// Token: 0x04001933 RID: 6451
		private TOpenQuery openQuery;

		// Token: 0x04001934 RID: 6452
		private TContainsTable containsTable;

		// Token: 0x04001935 RID: 6453
		private TTableSample tableSample;

		// Token: 0x04001936 RID: 6454
		private TPxGranule pxGranule;

		// Token: 0x04001937 RID: 6455
		private TFlashback flashback;

		// Token: 0x04001938 RID: 6456
		private TDataChangeTable datachangeTable;

		// Token: 0x04001939 RID: 6457
		private TRelationExpr relationExpr;

		// Token: 0x0400193A RID: 6458
		private TJsonTable _jsonTable;

		// Token: 0x0400193B RID: 6459
		private TMergeSqlNode mergeSqlNode;

		// Token: 0x0400193C RID: 6460
		private TPivotedTable pivotedTable;

		// Token: 0x0400193D RID: 6461
		private TPivotClause pivotClause;

		// Token: 0x0400193E RID: 6462
		private TFunctionCall funcCall;

		// Token: 0x0400193F RID: 6463
		private TInformixOuterClause outerClause;

		// Token: 0x04001940 RID: 6464
		private TFromTableList fromTableList;

		// Token: 0x04001941 RID: 6465
		private THivePartitionedTableFunction partitionedTableFunction;

		// Token: 0x04001942 RID: 6466
		private List<THiveLateralView> lateralViewList;

		// Token: 0x04001943 RID: 6467
		private TExpressionList joinExprList;
	}
}
